package array;

import java.util.Arrays;

public class ArrayDemo {


    public static void main(String[] args) {
        // 可变长参数可以接受0个或多个参数，甚至可以传递一个数组作为参数
        printAndSum(); // 不传递参数
        printAndSum(5); // 传递一个参数
        printAndSum(1, 2, 3, 4, 5); // 传递多个参数
        printAndSum(new int[]{10, 20, 30}); // 传递一个数组
    }

    public static void printAndSum(int... variableArgs) {
        // 可变长参数本质是一个数组
        System.out.println("传入参数的个数: " + variableArgs.length);
        System.out.print("参数值: ");
        int sum = 0;
        for (int arg : variableArgs) {
            System.out.print(arg + " ");
            sum += arg;
        }
        System.out.println("\n参数总和: " + sum);
    }



    public void arrayExample() {

        /*
        数组的声明与初始化

        定义一个数组类型的变量，使用数组类型“类型[]”，例如，int[]。
        和单个基本类型变量不同，数组变量初始化必须使用new int[5]表示创建一个可容纳5个int元素的数组

        ● 数组下标从0开始，通过arr[index]访问元素。
        ● 数组是引用类型，并且长度固定，创建后不可修改。
            数组元素可以是值元素

         */

        // 方式1:先声明后赋值
        int[] arrays1 = new int[3];
        arrays1[0]=1;


        // 2:直接初始化
        String[] names = {"wangming","xiaoxiang","feifei"};


        // 3:匿名数组
        double[] prices = new double[]{3.8,3};


        // 操作
        System.out.println(Arrays.toString(names)); // 打印数组

        Arrays.sort(prices);

        // 遍历数组（普通for循环）
        for(int i = 0; i < prices.length; i++){
            System.out.println("索引 " + i + " 的值: " + prices[i]);
        }
        // 增强for循环
        for(int i2:arrays1){
            System.out.println("索引的值: " + i2);
        }

        // 查找最大值
        double max = prices[0];
        for(double d:prices){
            if(d>max)
                max=d;
        }
        System.out.println("Max="+max);

    }

    public void twoDArrayExample(){
        int[][] matrix = {
                {4, 5, 6},
                {1, 2, 3},
                {7, 8, 9}
        };

        System.out.println("遍历二维数组");
        for(int i = 0;i< matrix.length;i++){
            for(int j = 0;j< matrix[i].length;j++)
                System.out.println(matrix[i][j]);
        }


        // 快速遍历
        System.out.println(Arrays.deepToString(matrix));

    }
}
